let express = require("express");

let { Cart } = require("../../model/index.js");

// ****1-创建一个路由中间件，来管理 文章相关的路由

let router = express.Router();

// ****2-在文章路由中间件 处理 文章相关的路由操作

// 1-获取所有文章，pagenum pagesize 分页，
// 返回 接口 参数值
// get /articles?pagenum=1
router.get("/", async (req, res) => {
  // 获取 搜索参数中 页码 和 页大小 ,设置 这个两个参数的默认值
  let pagesize = req.query.pagesize || 10;
  let pagenum = req.query.pagenum || 1;
  // let uid = req.query.uid;
  console.log(pagesize, pagenum);
  // req.auth.id  当前登录用的id

  let r = await Cart.find()
    .populate("pid")
    // 按照创建时间 降序
    .sort({ createdAt: -1 })
    // 分页操作
    .skip((pagenum - 1) * pagesize)

    .limit(pagesize);

  res.json({
    params: { pagenum, pagesize },
    data: r,
    msg: "-获取所有购物车数据，",
  });
});
// 3-根据文章id 删除文章 ，返回 接口作用和文章id
// delete /articles/:id
router.delete("/:cid", (req, res) => {
  Cart.findByIdAndDelete(req.params.cid).then((r) => {
    res.json({
      params: req.params,
      msg: "根据文章id 删除购物车",
    });
  });
});

// 根据购物车id 修改购物车
// 参数 购物车id 动态id
// 请请求体  pnum  checked 选中状态
router.patch("/:aid", (req, res) => {
  req.params.id; //文章的id
  req.body; //修改的内容 在请求体中
  //
  Cart.findByIdAndUpdate(req.params.aid, req.body).then((r) => {
    res.json({
      // params: req.params,
      // data: req.body,
      msg: "-根据文章id 修改文章 ",
      code: 1,
    });
  });
});

// 添加购物车 参数 pnum  pid
router.post("/", async (req, res) => {
  let has = await Cart.exists({ uid: req.auth.id, pid: req.body.pid });
  console.log(req.body);
  if (has) {
    // 如果存在就 在原来基础上增加1
    Cart.updateOne(
      { pid: req.body.pid, uid: req.auth.id },
      {
        $inc: { pnum: req.body.pnum },
      }
    ).then((r) => {
      res.json({
        // params: req.params,
        // data: req.body,
        msg: "-根据文章id 修改文章 ",
        code: 1,
      });
    });
  } else {
    // req.auth.id
    console.log(req.auth.id);
    req.body;
    // post提交过来数据 存储到数据库中
    let art = new Cart({
      uid: req.auth.id,
      ...req.body, //把body对象中属性，全部添加到 当前的新对象中
    });
    art.save().then((r) => {
      console.log(r);
      res.json({
        data: r,
        msg: "发布文章 ",
      });
    });
  }
});

// ******3-导出文章路由中间件
module.exports = router;
